package classes_metier;

import blueJ.*;

public class PC extends Ordinateur {
	private String numSerie;
	private Magasin mag;
    private PC suivant;
    private boolean jeton;

	public PC(String m, String p, String num, Magasin mg){
		super(m,p);
		this.numSerie = num;
		this.mag = mg;
	}

	public String getNumSerie() {
		return numSerie;
	}

	public void setNumSerie(String n) {
		this.numSerie = n;
	}

	public Magasin getMag() {
		return mag;
	}

	public void setMag(Magasin m) {
		this.mag = m;
	}

    /*on place un PC dans la boucle*/
    public boolean setSuivant(PC p){
        if(mag==null && p.getMag()==null){
            this.suivant = p;
            return true;
        }
        return false;
    }

    public PC getSuivant(){ return this.suivant; }

    public void setJeton(boolean b){ jeton = b; }

    /*si le PC possede le jeton, il peut le transmettre donc on retourne true, 
     * on retourne false sinon*/
    public boolean transmettreJeton(){
        if(jeton==true){
            suivant.setJeton(true);
            jeton = false;
            return true;
        }
        return false;
    }

    public void emettre(String s){
        System.out.println("Le PC "+this.numSerie+" a recu le message: "+s);
    }

    public boolean communicate(String s, String n){
        if(jeton==true){
            if(getDestinataire(n)!=null){
                getDestinataire(n).emettre(s);
                return true;
            }
        }
        System.out.println("Ce PC n'a pas le jeton!");
        return false;
    }

    protected PC getDestinataire(String num){
        if(suivant.getNumSerie().equals(num)){
            return suivant;
        }else{
            return suivant.getDestinataire(num);
        }
    }
}
